package com.senlingspace.system.domain.vo;

import com.senlingspace.common.enums.OrderSource;
import com.senlingspace.common.enums.LakalaPaymentTypeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.List;

/**
 * pos 端 订单列表
 *
 * @author lebronjames
 * @date 2024/07/30
 */
@Data
public class PosOrderVoV2 implements Serializable {
    /**
     * 订单 ID
     */
    private Long orderId;

    /**
     * 订单编号
     */
    private String orderNumber;

    /**
     * 下单时间
     */
    private String createTime;

    /**
     * 订单来源
     *
     * @see OrderSource
     */
    private Integer source;

    /**
     * 订单类型
     */
    private Integer orderType;

    /**
     * 实际收款
     */
    private String actualAmount;

    /**
     * 支付方式
     *
     * @see LakalaPaymentTypeEnum
     */
    private String paymentType;

    /**
     * 票类状态
     */
    private String ticketStatus;

    /**
     * 商品状态
     */
    private String goodsStatus;

    /**
     * 项目图片地址
     */
    private String cover;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 收银员
     */
    private String cashier;

    /**
     * 商品信息 票类
     */
    private List<Ticket> tickets;

    /**
     * 商品信息 票类
     */
    private List<Goods> goods;

    /**
     * 操作记录
     */
    private List<OperationRecord> operationRecords;

    @Data
    public static class OperationRecord implements Serializable {
        /**
         * 操作账号
         */
        private String operationAccount;

        /**
         * 操作时间
         */
        private String operationTime;

        /**
         * 内容
         */
        private String content;
    }

    @Data
    public static class Ticket implements Serializable {
        /**
         * 名称
         */
        private String name;

        /**
         * 购买数量
         */
        private Integer bayQuantity;

        /**
         * 价格
         */
        private String price;

        /**
         * 图片链接
         */
        private String itemUrl;
    }

    @EqualsAndHashCode(callSuper = true)
    @Data
    public static class Goods extends Ticket {

    }

}
